import axios from 'axios'
const user ={
    state:{
        userList:[],
        bookLists:[],
        choosedBook:[],
        catchUserObj:{},
        userPagination:{
            currentPage:1,
            pageSize:3
        },
        totalPage:0,
        viewUserObj:{}
    },
    mutations:{
        getUserData(state,obj){
            state.userList = obj
        },
        getBookData(state,arr){
            // 将状态为已借出的书籍筛选出去
            state.bookLists = arr.filter(function(val,index){
                return val.bkStatus != '已借出'
            })
           // console.log(state.bookLists)

        },
        // 获得所选书籍信息
        getChoosedBook(state,arr){
            state.choosedBook = arr
        },
        // 缓存用户新增或修改信息
        catchUserObjData(state,obj){
            state.catchUserObj = obj  
        },
        // 获取总页数
        getPageNum(state,num){
            state.totalPage = num
        },
        // 设置当前页
        setCurrentPage(state,num){
            state.userPagination.currentPage = num
        },
        // getviewUserObj(state,obj){
        //     state.viewUserObj = obj
        // }
    },
    actions:{
        // 在刷新页面时获取数据渲染表格 
        getUserList({commit,state}){
            //console.log(state)
            axios.get('user',{
                params:{
                    transform:1,
                    order:'id,desc',
                    page:state.userPagination.currentPage+','+state.userPagination.pageSize
                }
            })
            .then( res =>{
               let num = Math.ceil(res.data._results/state.userPagination.pageSize)
                commit('getUserData',res.data.user)
                commit('getPageNum',num)
            })
            .catch( err =>{
                console.log(err)
            }
            )
        },
        // 向后台获取所有的书籍信息
        getBookAll({commit},{router,type}){
            // 当选则全部或不选时让页面先示所有
            if(type){
               if(type=="全部"){
                type=''
               }else{
                type=type
               }
            }else{
                type=''
            }
            axios.get('userbook?transform=1&order=id&filter=bookType,cs,'+type)
            .then( res =>{
               if(res){
                commit('getBookData',res.data.userbook)
                // router.push('/home/user/bookDetail')
               }
            })
            .catch( err =>{
                console.log(err)
            }
            )
        },
        // 上传新增用户信息
        postUserList({commit,dispatch},obj){
            // 路由跳转的方法三将axios return出来返回一个promise 可以在AddUser页面对这个函数直接用then方法
        //   路由跳转的方法四 c采用async方法但又不做两个异步操作时有问题，所以仍然选用方法三promise
            // return axios.post('user',obj)
            //         .then( res =>{
            //             return res.data
            //         })
            //         .catch( err =>{
            //             console.log(err)
            //         })
            // 方法三promise
            // 要先判断是否已选图书
          if(JSON.parse(obj.booksName)[0]==undefined){
                    alert('请选择所借书名')
                    return
           }else{
                return axios.post('user',obj)
                .then( res =>{
                        if(res.data){
                            dispatch('upBookStatus',obj.booksName)
                            .then( a =>{
                                if(a){

                                }
                            })
                        }
                })
                .catch( err =>{
                    console.log(err)
                })
            }
         },
        //在新增用户时 将用户所选书籍状态在  图书系统中的突出状态为已借出
        upBookStatus({commit},booksName){
                return axios.put('userbook/'+JSON.parse(booksName)[0].id,{bkStatus:'已借出'})
                    .then( res =>{
                        return res.data
                    })
        },
        // 得到被选择的图书信息
        getChoosedBook({commit},arr){
            commit('getChoosedBook',arr)
        },
        // 删除时向后台传被删除的id
        delData({commit,dispatch},id){
            axios.delete('user/'+id)
            .then( res =>{
               if(res.data){
                alert('数据删除成功')
                // 异步调用重新获取数据
                dispatch('getUserList')
               }
            })
            .catch( err =>{
                console.log(err)
            })
        },
        // 修改用户信息  此处没有调异步操作 即未改变图书状态
        putUserList({commit},obj){
            console.log(obj.booksName)
           return axios.put('/user/'+obj.id,obj)
            .then( res =>{
                // dispatch('upBookStatus',obj.booksName)
            })
        }
    }
}
export default user
